home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / PRGMANIA / VERSION1.5 / WINDGEM.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-25  |  14.3 KB  |  341 lines

  1. /************************************************************************
  2.  *                                                                      *
  3.  *  WindGem.H : Définitions utilisées par les procédures WindGem.       *
  4.  *                                                                      *
  5.  ************************************************************************/
  6.  
  7. #ifndef __WINDGEM__
  8. #define __WINDGEM__
  9.  
  10. /*-=< Section d'inclusion des fichiers d'entete necessaire >=------------*/
  11. #include <stddef.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14. #include <stdlib.h>
  15. #include <ctype.h>
  16. #include <xgemfast.h>
  17. #include <tosbind.h>
  18. #include <atari.h>                                                                                /* pour KEYTAB */
  19. #include <malloc.h>
  20. #include <macros.h>
  21.  
  22. /*************************************************************************
  23.  * Definitions utiles.                                                   *
  24.  *************************************************************************/
  25. #define TRUE      1
  26. #define FALSE     0
  27. #define FAIL     -1
  28. #define MAX_LEN 256
  29. #define NOT         !
  30. #define BLANK  -1
  31. #define ZERO         0
  32.  
  33. #define NODRAW  0                            /* Pas de redessin du menu en fenêtre   */
  34. #define REDRAW  1                            /* Ordre de redessin du menu en fenêtre */
  35.  
  36. #define WNORM        0                            /* Fenetre normale                         */
  37. #define WMODAL    1                            /* Fenetre modale                          */
  38.  
  39. #define SLIDINI 0                            /* Initilisation du Slider                 */
  40. #define SLIDAFF 1                            /* Mise à jour                             */
  41. #define SLIDEND 2                            /* Fermeture du Slider                     */
  42.  
  43. /*************************************************************************
  44.  * Structure systeme.                                                    *
  45.  *************************************************************************/
  46.  
  47. typedef struct                                /* Parametres systeme                      */
  48. {
  49.     int AppId;                                    /* Id application                          */
  50.     int VdiHandle;                            /* Handle Vdi                              */
  51.     int mousex, mousey, mousek;    /* Informations souris                     */
  52.     int key, kbd;                                /* Gestion du clavier                      */
  53.     int clik;                                        /* Clic souris                             */
  54.     int color_3d1, color_3d2;        /* Couleur pour la 3D                      */
  55.     int Wchar, Hchar;                        /* Taille caractere                        */
  56.     int Wcell, Hcell;                        /* Taille boite contenant caractère        */
  57.     OBJECT *AdrUser;                        /* Objet contenant les objets Userdefs     */
  58.     OBJECT *AdrIcone;                        /* Objet contenant l'icones pour iconify   */
  59.     OBJECT *AdrObjet;                        /* Adresse objet courant                   */
  60.     OBJECT *AdrAide;                        /* Adresse objet aide en ligne             */
  61.     OBJECT *AdrSlider;                    /* Adresse objet Slider                    */
  62.     OBJECT *AdrAlerte;                    /* Adresse objet Alerte                    */
  63.     int popMenu;                                /* Numéro de l'arbre d'objets pour popup   */
  64.     void (*popup)(int event);        /* Fonction de gestion du popup menu       */
  65.     int Xdesk,Ydesk,Wdesk,Hdesk;/* Coordonnees du bureau                   */
  66.     void (*gereDesk)(int evnt);    /* fonction de gestion du bureau ou NULL   */
  67.     int Xres, Yres;                            /* Resolution de l'ecran                   */
  68.     int Nplane;                                    /* Nombre de plans du bureau               */
  69.     int baseline;                                /* Premiere ligne de texte dans une fenetre*/
  70.     int objet, pos;                            /* Gestion des objets bloquants            */ 
  71.     int new_objc, new_pos;            /* Nouvel objet, nouvelle position         */
  72.     int lastMode;                                /* Mode de la fenetre actuelle (MODAL ?!)  */
  73.     int lastImg;                                /* Dernier numero de fenetre graphique     */
  74.     int lastTxt;                                /* Dernier numero de fenetre texte             */
  75.     int lastUsr;                                /* Dernier numero de fenetre utilisateur   */
  76.     void (*menu)(int option);        /* Fonction de gestion du menu             */
  77.     void (*desk)(int event);        /* Fonction de gestion du bureau           */
  78. } System;
  79.  
  80. extern int VdiHandle;                    /* Handle VDI pour l'utilisateur           */
  81. extern int AppId;                            /* ID application pour l'utilisateur       */
  82. extern char AppPath[128];            /* Chemin de l'application                 */
  83. extern int CurWindow;                    /* Numéro de l'objet WindGem courant       */
  84. extern OBJECT *AdrDesk;                /* Adresse du bureau                       */
  85. extern OBJECT *AdrMenu;                /* Adresse du menu                         */
  86.  
  87. /*************************************************************************
  88.  * Definition des touches.                                               *
  89.  *************************************************************************/
  90. #define HELP        0x6200
  91. #define UNDO        0x6100
  92. #define ARUP        0x4800
  93. #define ARDN        0x5000
  94. #define ARLF        0x4B00
  95. #define ARRT        0x4D00
  96. #define SH_ARUP 0x4838
  97. #define SH_ARDN 0x5032
  98. #define SH_ARLF 0x4B34
  99. #define SH_ARRT 0x4D36
  100. #define ESC            0x011B
  101. #define RETURN    0x720D
  102. #define ENTER        0x1C0D
  103. #define HOME        0x4700
  104. #define SH_HOME    0x4737
  105.  
  106. /*************************************************************************
  107.  * Definition des nouveaux evenements Userdefs.                          *
  108.  *************************************************************************/
  109. #define EV_NO             0        /* Pas d'evenement                               */
  110. #define EV_OPEN         8192    /* Ouverture Fenetre                             */
  111. #define EV_CLOSE    -1        /* Fermeture Fenetre                             */
  112. #define EV_HELP        -100    /* Touche Help                                   */
  113. #define EV_UNDO        -101    /* Touche Undo                                   */
  114. #define EV_ARUP        -102    /* Fleche Haut                                   */
  115. #define EV_ARDN        -103    /* Fleche Bas                                    */
  116. #define    EV_ARLF        -104    /* Fleche Gauche                                 */
  117. #define EV_ARRT        -105    /* Fleche Droite                                 */
  118. #define EV_SHARUP    -106    /*  Fleche Haut                                 */
  119. #define EV_SHARDN    -107    /*  Fleche Bas                                  */
  120. #define EV_SHARLF    -108    /*  Fleche Gauche                               */
  121. #define EV_SHARRT    -109    /*  Fleche Droite                               */
  122. #define EV_HOME        -110    /* Touche Home                                   */
  123. #define EV_SHHOME    -111    /* Touche  Home                                 */
  124. #define EV_ESC        -112    /* Touche Escape                                 */
  125.  
  126. /*************************************************************************
  127.  * Messages d'erreurs.                                                                     *
  128.  *************************************************************************/
  129. #define WindOK                 0    /* Tout s'est bien passe                       */
  130. #define WindErrNoRsc    -1    /* Fichier RSC manquant                        */
  131.  
  132. /*-----------------------------------------------------------------------*
  133.  *-------------------- Déclaration des constantes -----------------------*
  134.  * associées à la structure MachineInfo                                  *
  135.  *-----------------------------------------------------------------------*/
  136. typedef    struct
  137. {
  138.     int        Processor;                /* Processor type */
  139.     long    Machine;                    /* Machine type */
  140.     int        Switch;                        /* Mother board switch */
  141.     long    Fdc;                            /* Floppy Disk Controler */
  142.     int        Keyboard;                    /* Keyboard type */
  143.     int        Language;                    /* Current Language */
  144.     long    Shifter;                    /* Video circuit */
  145.     int        Sound;                        /* Sound System */
  146.     int        Fpu;                            /* Flotting Point Unit */
  147.     int        Separator;                /* Date separator */
  148.     int        Date;                            /* date format */
  149.     int        Time;                            /* time format */
  150.     /* Version extract from system's call */
  151.     int        TosVersion;
  152.     int        GemdosVersion;
  153.     int        AesVersion; 
  154.     /* Calculate from Cookie "MiNT" */
  155.     int        MultiTosVersion;
  156.     /* Présence de Magic */
  157.     int        Magic;
  158. } MachineInfo;
  159.  
  160. extern MachineInfo Ordi;            /* Information système                     */
  161.  
  162. #define    M68000        0x0000            /* Processeurs */
  163. #define    M68010        0x000A
  164. #define    M68020        0x0014
  165. #define    M68030        0x001E
  166.  
  167. #define    ST                0x00000L        /* Machines */
  168. #define    STE                0x10000L
  169. #define    MSTE            0x10010L
  170. #define    TT                0x20000L
  171. #define    FALCON30    0x30000L
  172.  
  173. #define    KEYB_USA    0x0            /* Clavier */
  174. #define    KEYB_D        0x1
  175. #define    KEYB_F        0x2
  176. #define    KEYB_GB        0x3
  177. #define    KEYB_SP        0x4
  178. #define    KEYB_I        0x5
  179. #define    KEYB_CHD    0x7
  180. #define    KEYB_CHF    0x8
  181.  
  182. #define    LG_USA        0x0            /* Langue */
  183. #define    LG_D            0x1
  184. #define    LG_F            0x2
  185. #define    LG_GB            0x3
  186. #define    LG_SP            0x4
  187. #define    LG_I            0x5
  188. #define    LG_CHD        0x7
  189. #define    LG_CHF        0x8
  190.  
  191. #define    SHIFTER_ST        0x00000L        /* Circuit Video */
  192. #define    SHIFTER_STE        0x10000L
  193. #define    SHIFTER_TT        0x20000L
  194. #define    VIDEL_FALCON    0x30000L
  195.  
  196. #define    MATRICE        0x08            /* Systeme sonore */
  197. #define    DSP                0x04
  198. #define    CODEC            0x02
  199. #define    PSG                0x01
  200.  
  201. #define    NO_FPU                0            /* Copro. Math. */
  202. #define    SFP004                1
  203. #define    C68881_2            2
  204. #define    C68881_2_SFP    3
  205. #define    C68881                4
  206. #define    C68881_SFP        5
  207. #define    C68882                6
  208. #define    C68882_SFP        7
  209. #define    C68040                8
  210. #define    C68040_SFP        9
  211.  
  212. #define    DATE_MJA    0            /* Format date */
  213. #define    DATE_JMA    1
  214. #define    DATE_AMJ    2
  215. #define    DATE_AJM    3
  216.  
  217. #define    TIME_12        0            /* Format horaire */
  218. #define    TIME_24        1
  219.  
  220. /*************************************************************************
  221.  * Prototypes des Fonctions de Dialogue.                                 *
  222.  *************************************************************************/
  223.  
  224. /*-=< Routines UserDefs >=-----------------------------------------------*/
  225. void set_user(OBJECT *addr_tree);
  226.  
  227. /*-=< Gestion de l'application - GemSyst.c >=----------------------------*/
  228. void AppInit(char *fic_rsc, int desk, void (*gereDesk)(int event), int menu, void (*gereMenu)(int event));
  229. void AppExit(void);
  230.  
  231. /*-=< Gestion des formulaires - GemForm.c >=-----------------------------*/
  232. void WindFormInit(int numObj, int mode, int inf_x, int inf_y, char *title, int edit, void (*fonct)(int evnt));
  233. void WindOpen(int numObj);
  234. void WindClose(int numObj);
  235. void WindDelete(int numObj);
  236. void ObjcUnselect(int arbre, int numObj);
  237. void WindDraw(int arbre, int objet);
  238. void SetValeur (int arbre, int objet, char *valeur);
  239. char *GetValeur (int arbre, int objet);
  240. void EffaceChamp (int arbre, int objet);
  241. OBJECT *GetObject (int arbre);
  242. void GetCoord (int numObj, GRECT *coord);
  243. void GetWorkXYWH (int numObj, GRECT *coord);
  244.  
  245. /*-=< Diverses autres fonction de GemForm.c >=---------------------------*/
  246. int GetHandle (int objet);
  247. int GetObjet(void);
  248. void *GetVar (int numObj);
  249. int EventMulti (void);
  250. int WindUserInit (int attrib, GRECT pos, char *title, void (*init)(), void (*exit)(), void (*message)(int evnt), void (*clavier)(int kbd, int key), void (*souris)(int x, int y, int k, int nb), void *var);
  251.  
  252. /*-=< Gestion des menus en fenêtre - GemMenu.c >=------------------------*/
  253. void AjouteMenu (int numObj, int menu, int mode, void (*wmenu)(int opt));
  254. void EnleveMenu (int numObj, int mode);
  255. void wmenu_icheck (int arbre, int obj, int etat);
  256. void AjouteToolBar (int numObj, int toolbar, int mode, void (*wtoolbar)(int opt));
  257. void EnleveToolBar (int numObj, int mode);
  258. void ToolBarUnselect(int arbre, int numObjc, int mode);
  259. void ToolBarSelect(int arbre, int numObjc, int mode);
  260.  
  261. /*-=< Gestion de l'aide - GemHelp.c >=-----------------------------------*/
  262. void AjouteAide (int arbre, int objet, char *txt);
  263. void StGuide(char *fichierHyp, char *node);
  264.  
  265. /*-=< Gestion des Sliders - GemSlid.c >=---------------------------------*/
  266. void SetSlider (int mode, int echelle, int position, char *text);
  267.  
  268. /*-=< Gestion des Sliders - GemAlerte.c >=-------------------------------*/
  269. void FormAlerte(int index);
  270. int WindAlerte (int icone, BITBLK *user_icn, char *texte, char *bouton, int defaut);
  271.  
  272. #define ICN_USER        -1
  273. #define ICN_EXCLAM1    0
  274. #define ICN_QUEST1    1
  275. #define ICN_HAND1        2
  276. #define ICN_INFO        3
  277. #define ICN_BOMB        4
  278. #define ICN_DISK1        5
  279. #define ICN_HD            6
  280. #define ICN_DISK2        7
  281. #define ICN_PRINTER    8
  282. #define ICN_EXCLAM2    9
  283. #define ICN_QUEST2    10
  284. #define ICN_STOP        11
  285. #define ICN_HAND2        12
  286. #define ICN_QUEST3    13
  287.  
  288.  
  289. /*-=< Gestion des images - GemGrap.c >=----------------------------------*/
  290. int WindGraphInit(MFDB *image, char *title, int x, int y, int w, int h, int nb_col, int max_x, int max_y);
  291.  
  292. /*-=< Gestion des popup - GemPopUp.c >=----------------------------------*/
  293. void pop_up (int arbre, int obj, int pu);
  294. void PopMenu(int numObj, void (*gerePopup)(int option));
  295. void AjoutePopup (int arbre, int objet, int ArbrePopup);
  296.  
  297. /*-=< Gestion des textes - GemText.c >=----------------------------------*/
  298. int WindTextInit (char *file, GRECT *Fpos, char *title);
  299. int GetWindText (int numTxt, char **ligne[], int *nbcol);
  300. void SetWindText (int numTxt, int nblig, int nbcol, char **ligne);
  301.  
  302. /*-=< Fonctions diverse : GemUtil.c >=-----------------------------------*/
  303. #define INS_AVANT   -1
  304. #define INS_APRES    1
  305.  
  306. void get_bkgr (int of_x, int of_y, int of_w, int of_h, MFDB *img);
  307. void put_bkgr (int of_x, int of_y, int of_w, int of_h, MFDB *img);
  308.  
  309. OBJECT *copy_tree(OBJECT *tree);
  310. int parent (OBJECT *adr, int object);
  311. void set_clip (int clip_flag, GRECT *area);
  312. void EnvoiMessage(int type, int handle, int message);
  313. void EnvoiRedraw(int handle, int x, int y, int w, int h);
  314. char *trim (char *str);
  315. char *strnpcpy(char *dest, char *start, char *stop);
  316. char *get_text (OBJECT *adr, int object);
  317. void set_text (OBJECT *adr, int object, char *string);
  318. long exist (char *name, int att);
  319. char *path (char *chemin);
  320. int selector (char *chemin, char *ext, char *file, char *title);
  321. void extension (char *filename, char *ext);
  322. void litdate (char *dat, unsigned int fdate);
  323. void convdate (char *date, unsigned int *fdate);
  324. char *strnpcpy(char *dest, char *start, char *stop);
  325. char *strcomplete (char *chaine, int lng, char car, int sens);
  326. char *strinsert (char *chaine, char *ch);
  327. char *strcopy(char *res, char *chaine, int deb, int fin);
  328. char *strleft (char *res, char *chaine, int nb);
  329. char *strright (char *res, char *chaine, int nb);
  330. char *strmid (char *res, char *chaine, int deb, int nb);
  331. void cre_fichier(char *chemin, char *fic, char *fichier);
  332. void GetCharSize (int *Wchar, int *Hchar);
  333. void GetDeskXYWH (int *Xdesk, int *Ydesk, int *Wdesk, int *Hdesk);
  334. void GetVideoRes (int *Xres, int *Yres, int *Nplane);
  335.  
  336. #endif
  337.  
  338. /*************************************************************************
  339.  * Fin du module de declaration.                                         *
  340.  *************************************************************************/
  341.